#include <iostream>
// #include <iomanip>
#include <chrono>
#include <cmath>
// #include <cstdlib>
#include <string>
// #include <cstring>
// #include <stdarg.h>
#include <random>
// #include <ctime>
// #include <bitset>
#include <immintrin.h> //simd
#include <format>      // g++编译时添加 -std=c++20   MSVC编译器也需指定c++20
//-fopt-info-vec-optimized
long long int getcycle()
{
    uint64_t low, high;
    __asm volatile("rdtsc" : "=a"(low), "=d"(high));
    return (high << 32) | low;
}

// template<int t=0,int Precision=16>
// int myfunc(){

// }
int64_t array[2046] = {22250738585072014, 44501477170144028, 89002954340288055, 17800590868057611, 35601181736115222, 71202363472230444, 14240472694446089, 28480945388892178, 56961890777784355, 11392378155556871, 22784756311113742, 45569512622227484, 91139025244454969, 18227805048890994, 36455610097781987, 72911220195563975, 14582244039112795, 29164488078225590, 58328976156451180, 11665795231290236, 23331590462580472, 46663180925160944, 93326361850321888, 18665272370064378, 37330544740128755, 74661089480257510, 14932217896051502, 29864435792103004, 59728871584206008, 11945774316841202, 23891548633682403, 47783097267364807, 95566194534729613, 19113238906945923, 38226477813891845, 76452955627783691, 15290591125556738, 30581182251113476, 61162364502226952, 12232472900445390, 24464945800890781, 48929891601781562, 97859783203563124, 19571956640712625, 39143913281425250, 78287826562850499, 15657565312570100, 31315130625140200, 62630261250280399, 12526052250056080, 25052104500112160, 50104209000224319, 10020841800044864, 20041683600089728, 40083367200179456, 80166734400358911, 16033346880071782, 32066693760143564, 64133387520287129, 12826677504057426, 25653355008114852, 51306710016229703, 10261342003245941, 20522684006491881, 41045368012983762, 82090736025967525, 16418147205193505, 32836294410387010, 65672588820774020, 13134517764154804, 26269035528309608, 52538071056619216, 10507614211323843, 21015228422647686, 42030456845295373, 84060913690590746, 16812182738118149, 33624365476236298, 67248730952472596, 13449746190494519, 26899492380989039, 53798984761978077, 10759796952395615, 21519593904791231, 43039187809582462, 86078375619164923, 17215675123832985, 34431350247665969, 68862700495331939, 13772540099066388, 27545080198132776, 55090160396265551, 11018032079253110, 22036064158506220, 44072128317012441, 88144256634024882, 17628851326804976, 35257702653609953, 70515405307219905, 14103081061443981, 28206162122887962, 56412324245775924, 11282464849155185, 22564929698310370, 45129859396620739, 90259718793241479, 18051943758648296, 36103887517296592, 72207775034593183, 14441555006918637, 28883110013837273, 57766220027674546, 11553244005534909, 23106488011069819, 46212976022139637, 92425952044279274, 18485190408855855, 36970380817711710, 73940761635423419, 14788152327084684, 29576304654169368, 59152609308338736, 11830521861667747, 23661043723335494, 47322087446670988, 94644174893341977, 18928834978668395, 37857669957336791, 75715339914673582, 15143067982934716, 30286135965869433, 60572271931738865, 12114454386347773, 24228908772695546, 48457817545391092, 96915635090782184, 19383127018156437, 38766254036312874, 77532508072625747, 15506501614525149, 31013003229050299, 62026006458100598, 12405201291620120, 24810402583240239, 49620805166480478, 99241610332960957, 19848322066592191, 39696644133184383, 79393288266368765, 15878657653273753, 31757315306547506, 63514630613095012, 12702926122619002, 25405852245238005, 50811704490476010, 10162340898095202, 20324681796190404, 40649363592380808, 81298727184761616, 16259745436952323, 32519490873904646, 65038981747809293, 13007796349561859, 26015592699123717, 52031185398247434, 10406237079649487, 20812474159298974, 41624948318597947, 83249896637195895, 16649979327439179, 33299958654878358, 66599917309756716, 13319983461951343, 26639966923902686, 53279933847805373, 10655986769561075, 21311973539122149, 42623947078244298, 85247894156488596, 17049578831297719, 34099157662595438, 68198315325190877, 13639663065038175, 27279326130076351, 54558652260152701, 10911730452030540, 21823460904061081, 43646921808122161, 87293843616244322, 17458768723248864, 34917537446497729, 69835074892995458, 13967014978599092, 27934029957198183, 55868059914396366, 11173611982879273, 22347223965758547, 44694447931517093, 89388895863034186, 17877779172606837, 35755558345213674, 71511116690427349, 14302223338085470, 28604446676170940, 57208893352341879, 11441778670468376, 22883557340936752, 45767114681873503, 91534229363747007, 18306845872749401, 36613691745498803, 73227383490997605, 14645476698199521, 29290953396399042, 58581906792798084, 11716381358559617, 23432762717119234, 46865525434238467, 93731050868476935, 18746210173695387, 37492420347390774, 74984840694781548, 14996968138956310, 29993936277912619, 59987872555825238, 11997574511165048, 23995149022330095, 47990298044660191, 95980596089320381, 19196119217864076, 38392238435728152, 76784476871456305, 15356895374291261, 30713790748582522, 61427581497165044, 12285516299433009, 24571032598866018, 49142065197732035, 98284130395464070, 19656826079092814, 39313652158185628, 78627304316371256, 15725460863274251, 31450921726548502, 62901843453097005, 12580368690619401, 25160737381238802, 50321474762477604, 10064294952495521, 20128589904991042, 40257179809982083, 80514359619964166, 16102871923992833, 32205743847985667, 64411487695971333, 12882297539194267, 25764595078388533, 51529190156777066, 10305838031355413, 20611676062710827, 41223352125421653, 82446704250843306, 16489340850168661, 32978681700337323, 65957363400674645, 13191472680134929, 26382945360269858, 52765890720539716, 10553178144107943, 21106356288215886, 42212712576431773, 84425425152863546, 16885085030572709, 33770170061145418, 67540340122290837, 13508068024458167, 27016136048916335, 54032272097832669, 10806454419566534, 21612908839133068, 43225817678266135, 86451635356532271, 17290327071306454, 34580654142612908, 69161308285225817, 13832261657045163, 27664523314090327, 55329046628180653, 11065809325636131, 22131618651272261, 44263237302544523, 88526474605089045, 17705294921017809, 35410589842035618, 70821179684071236, 14164235936814247, 28328471873628494, 56656943747256989, 11331388749451398, 22662777498902796, 45325554997805591, 90651109995611182, 18130221999122236, 36260443998244473, 72520887996488946, 14504177599297789, 29008355198595578, 58016710397191157, 11603342079438231, 23206684158876463, 46413368317752925, 92826736635505851, 18565347327101170, 37130694654202340, 74261389308404681, 14852277861680936, 29704555723361872, 59409111446723744, 11881822289344749, 23763644578689498, 47527289157378996, 95054578314757991, 19010915662951598, 38021831325903196, 76043662651806393, 15208732530361279, 30417465060722557, 60834930121445114, 12166986024289023, 24333972048578046, 48667944097156091, 97335888194312183, 19467177638862437, 38934355277724873, 77868710555449746, 15573742111089949, 31147484222179899, 62294968444359797, 12458993688871959, 24917987377743919, 49835974755487838, 99671949510975675, 19934389902195135, 39868779804390270, 79737559608780540, 15947511921756108, 31895023843512216, 63790047687024432, 12758009537404886, 25516019074809773, 51032038149619546, 10206407629923909, 20412815259847818, 40825630519695637, 81651261039391273, 16330252207878255, 32660504415756509, 65321008831513019, 13064201766302604, 26128403532605207, 52256807065210415, 10451361413042083, 20902722826084166, 41805445652168332, 83610891304336664, 16722178260867333, 33444356521734666, 66888713043469331, 13377742608693866, 26755485217387732, 53510970434775465, 10702194086955093, 21404388173910186, 42808776347820372, 85617552695640744, 17123510539128149, 34247021078256297, 68494042156512595, 13698808431302519, 27397616862605038, 54795233725210076, 10959046745042015, 21918093490084030, 43836186980168061, 87672373960336122, 17534474792067224, 35068949584134449, 70137899168268897, 14027579833653779, 28055159667307559, 56110319334615118, 11222063866923024, 22444127733846047, 44888255467692094, 89776510935384189, 17955302187076838, 35910604374153675, 71821208748307351, 14364241749661470, 28728483499322940, 57456966998645881, 11491393399729176, 22982786799458352, 45965573598916705, 91931147197833409, 18386229439566682, 36772458879133364, 73544917758266727, 14708983551653345, 29417967103306691, 58835934206613382, 11767186841322676, 23534373682645353, 47068747365290705, 94137494730581411, 18827498946116282, 37654997892232564, 75309995784465129, 15061999156893026, 30123998313786051, 60247996627572103, 12049599325514421, 24099198651028841, 48198397302057682, 96396794604115365, 19279358920823073, 38558717841646146, 77117435683292292, 15423487136658458, 30846974273316917, 61693948546633833, 12338789709326767, 24677579418653533, 49355158837307067, 98710317674614133, 19742063534922827, 39484127069845653, 78968254139691307, 15793650827938261, 31587301655876523, 63174603311753045, 12634920662350609, 25269841324701218, 50539682649402436, 10107936529880487, 20215873059760975, 40431746119521949, 80863492239043898, 16172698447808780, 32345396895617559, 64690793791235119, 12938158758247024, 25876317516494047, 51752635032988095, 10350527006597619, 20701054013195238, 41402108026390476, 82804216052780952, 16560843210556190, 33121686421112381, 66243372842224761, 13248674568444952, 26497349136889905, 52994698273779809, 10598939654755962, 21197879309511924, 42395758619023847, 84791517238047695, 16958303447609539, 33916606895219078, 67833213790438156, 13566642758087631, 27133285516175262, 54266571032350524, 10853314206470105, 21706628412940210, 43413256825880420, 86826513651760839, 17365302730352168, 34730605460704336, 69461210921408671, 13892242184281734, 27784484368563469, 55568968737126937, 11113793747425387, 22227587494850775, 44455174989701550, 88910349979403099, 17782069995880620, 35564139991761240, 71128279983522479, 14225655996704496, 28451311993408992, 56902623986817984, 11380524797363597, 22761049594727193, 45522099189454387, 91044198378908774, 18208839675781755, 36417679351563509, 72835358703127019, 14567071740625404, 29134143481250808, 58268286962501615, 11653657392500323, 23307314785000646, 46614629570001292, 93229259140002584, 18645851828000517, 37291703656001034, 74583407312002067, 14916681462400413, 29833362924800827, 59666725849601654, 11933345169920331, 23866690339840662, 47733380679681323, 95466761359362646, 19093352271872529, 38186704543745059, 76373409087490117, 15274681817498023, 30549363634996047, 61098727269992094, 12219745453998419, 24439490907996837, 48878981815993675, 97757963631987350, 19551592726397470, 39103185452794940, 78206370905589880, 15641274181117976, 31282548362235952, 62565096724471904, 12513019344894381, 25026038689788762, 50052077379577523, 10010415475915505, 20020830951831009, 40041661903662018, 80083323807324037, 16016664761464807, 32033329522929615, 64066659045859230, 12813331809171846, 25626663618343692, 51253327236687384, 10250665447337477, 20501330894674953, 41002661789349907, 82005323578699814, 16401064715739963, 32802129431479926, 65604258862959851, 13120851772591970, 26241703545183940, 52483407090367881, 10496681418073576, 20993362836147152, 41986725672294305, 83973451344588609, 16794690268917722, 33589380537835444, 67178761075670888, 13435752215134178, 26871504430268355, 53743008860536710, 10748601772107342, 21497203544214684, 42994407088429368, 85988814176858736, 17197762835371747, 34395525670743494, 68791051341486989, 13758210268297398, 27516420536594796, 55032841073189591, 11006568214637918, 22013136429275836, 44026272858551673, 88052545717103346, 17610509143420669, 35221018286841338, 70442036573682677, 14088407314736535, 28176814629473071, 56353629258946141, 11270725851789228, 22541451703578456, 45082903407156913, 90165806814313826, 18033161362862765, 36066322725725530, 72132645451451061, 14426529090290212, 28853058180580424, 57706116361160849, 11541223272232170, 23082446544464339, 46164893088928679, 92329786177857358, 18465957235571472, 36931914471142943, 73863828942285886, 14772765788457177, 29545531576914354, 59091063153828709, 11818212630765742, 23636425261531484, 47272850523062967, 94545701046125934, 18909140209225187, 37818280418450374, 75636560836900748, 15127312167380150, 30254624334760299, 60509248669520598, 12101849733904120, 24203699467808239, 48407398935616478, 96814797871232957, 19362959574246591, 38725919148493183, 77451838296986365, 15490367659397273, 30980735318794546, 61961470637589092, 12392294127517818, 24784588255035637, 49569176510071274, 99138353020142548, 19827670604028510, 39655341208057019, 79310682416114038, 15862136483222808, 31724272966445615, 63448545932891231, 12689709186578246, 25379418373156492, 50758836746312984, 10151767349262597, 20303534698525194, 40607069397050388, 81214138794100775, 16242827758820155, 32485655517640310, 64971311035280620, 12994262207056124, 25988524414112248, 51977048828224496, 10395409765644899, 20790819531289798, 41581639062579597, 83163278125159194, 16632655625031839, 33265311250063677, 66530622500127355, 13306124500025471, 26612249000050942, 53224498000101884, 10644899600020377, 21289799200040754, 42579598400081507, 85159196800163014, 17031839360032603, 34063678720065206, 68127357440130412, 13625471488026082, 27250942976052165, 54501885952104329, 10900377190420866, 21800754380841732, 43601508761683463, 87203017523366927, 17440603504673385, 34881207009346771, 69762414018693541, 13952482803738708, 27904965607477417, 55809931214954833, 11161986242990967, 22323972485981933, 44647944971963866, 89295889943927733, 17859177988785547, 35718355977571093, 71436711955142186, 14287342391028437, 28574684782056875, 57149369564113749, 11429873912822750, 22859747825645500, 45719495651290999, 91438991302581999, 18287798260516400, 36575596521032799, 73151193042065599, 14630238608413120, 29260477216826240, 58520954433652479, 11704190886730496, 23408381773460992, 46816763546921983, 93633527093843967, 18726705418768793, 37453410837537587, 74906821675075173, 14981364335015035, 29962728670030069, 59925457340060139, 11985091468012028, 23970182936024055, 47940365872048111, 95880731744096222, 19176146348819244, 38352292697638489, 76704585395276977, 15340917079055395, 30681834158110791, 61363668316221582, 12272733663244316, 24545467326488633, 49090934652977266, 98181869305954531, 19636373861190906, 39272747722381812, 78545495444763625, 15709099088952725, 31418198177905450, 62836396355810900, 12567279271162180, 25134558542324360, 50269117084648720, 10053823416929744, 20107646833859488, 40215293667718976, 80430587335437952, 16086117467087590, 32172234934175181, 64344469868350361, 12868893973670072, 25737787947340145, 51475575894680289, 10295115178936058, 20590230357872116, 41180460715744231, 82360921431488463, 16472184286297693, 32944368572595385, 65888737145190770, 13177747429038154, 26355494858076308, 52710989716152616, 10542197943230523, 21084395886461046, 42168791772922093, 84337583545844186, 16867516709168837, 33735033418337674, 67470066836675349, 13494013367335070, 26988026734670139, 53976053469340279, 10795210693868056, 21590421387736112, 43180842775472223, 86361685550944446, 17272337110188889, 34544674220377779, 69089348440755557, 13817869688151111, 27635739376302223, 55271478752604446, 11054295750520889, 22108591501041778, 44217183002083556, 88434366004167113, 17686873200833423, 35373746401666845, 70747492803333690, 14149498560666738, 28298997121333476, 56597994242666952, 11319598848533390, 22639197697066781, 45278395394133562, 90556790788267124, 18111358157653425, 36222716315306849, 72445432630613699, 14489086526122740, 28978173052245480, 57956346104490959, 11591269220898192, 23182538441796384, 46365076883592767, 92730153767185535, 18546030753437107, 37092061506874214, 74184123013748428, 14836824602749686, 29673649205499371, 59347298410998742, 11869459682199748, 23738919364399497, 47477838728798994, 94955677457597987, 18991135491519597, 37982270983039195, 75964541966078390, 15192908393215678, 30385816786431356, 60771633572862712, 12154326714572542, 24308653429145085, 48617306858290170, 97234613716580339, 19446922743316068, 38893845486632136, 77787690973264271, 15557538194652854, 31115076389305709, 62230152778611417, 12446030555722283, 24892061111444567, 49784122222889134, 99568244445778267, 19913648889155653, 39827297778311307, 79654595556622614, 15930919111324523, 31861838222649046, 63723676445298091, 12744735289059618, 25489470578119236, 50978941156238473, 10195788231247695, 20391576462495389, 40783152924990778, 81566305849981557, 16313261169996311, 32626522339992623, 65253044679985245, 13050608935997049, 26101217871994098, 52202435743988196, 10440487148797639, 20880974297595278, 41761948595190557, 83523897190381114, 16704779438076223, 33409558876152446, 66819117752304891, 13363823550460978, 26727647100921956, 53455294201843913, 10691058840368783, 21382117680737565, 42764235361475130, 85528470722950261, 17105694144590052, 34211388289180104, 68422776578360209, 13684555315672042, 27369110631344083, 54738221262688167, 10947644252537633, 21895288505075267, 43790577010150533, 87581154020301067, 17516230804060213, 35032461608120427, 70064923216240854, 14012984643248171, 28025969286496341, 56051938572992683, 11210387714598537, 22420775429197073, 44841550858394146, 89683101716788293, 17936620343357659, 35873240686715317, 71746481373430634, 14349296274686127, 28698592549372254, 57397185098744507, 11479437019748901, 22958874039497803, 45917748078995606, 91835496157991212, 18367099231598242, 36734198463196485, 73468396926392969, 14693679385278594, 29387358770557188, 58774717541114375, 11754943508222875, 23509887016445750, 47019774032891500, 94039548065783001, 18807909613156600, 37615819226313200, 75231638452626401, 15046327690525280, 30092655381050560, 60185310762101120, 12037062152420224, 24074124304840448, 48148248609680896, 96296497219361793, 19259299443872359, 38518598887744717, 77037197775489434, 15407439555097887, 30814879110195774, 61629758220391547, 12325951644078309, 24651903288156619, 49303806576313238, 98607613152626476, 19721522630525295, 39443045261050590, 78886090522101181, 15777218104420236, 31554436208840472, 63108872417680944, 12621774483536189, 25243548967072378, 50487097934144756, 10097419586828951, 20194839173657902, 40389678347315804, 80779356694631609, 16155871338926322, 32311742677852644, 64623485355705287, 12924697071141057, 25849394142282115, 51698788284564230, 10339757656912846, 20679515313825692, 41359030627651384, 82718061255302767, 16543612251060553, 33087224502121107, 66174449004242214, 13234889800848443, 26469779601696886, 52939559203393771, 10587911840678754, 21175823681357508, 42351647362715017, 84703294725430034, 16940658945086007, 33881317890172014, 67762635780344027, 13552527156068805, 27105054312137611, 54210108624275222, 10842021724855044, 21684043449710089, 43368086899420177, 86736173798840355, 17347234759768071, 34694469519536142, 69388939039072284, 13877787807814457, 27755575615628914, 55511151231257827, 11102230246251565, 22204460492503131, 44408920985006262, 88817841970012523, 17763568394002505, 35527136788005009, 71054273576010019, 14210854715202004, 28421709430404007, 56843418860808015, 11368683772161603, 22737367544323206, 45474735088646412, 90949470177292824, 18189894035458565, 36379788070917130, 72759576141834259, 14551915228366852, 29103830456733704, 58207660913467407, 11641532182693481, 23283064365386963, 46566128730773926, 93132257461547852, 18626451492309570, 37252902984619141, 74505805969238281, 14901161193847656, 29802322387695312, 59604644775390625, 11920928955078125, 23841857910156250, 47683715820312500, 95367431640625000, 19073486328125000, 38146972656250000, 76293945312500000, 15258789062500000, 30517578125000000, 61035156250000000, 12207031250000000, 24414062500000000, 48828125000000000, 97656250000000000, 19531250000000000, 39062500000000000, 78125000000000000, 15625000000000000, 31250000000000000, 62500000000000000, 12500000000000000, 25000000000000000, 50000000000000000, 10000000000000000, 20000000000000000, 40000000000000000, 80000000000000000, 16000000000000000, 32000000000000000, 64000000000000000, 12800000000000000, 25600000000000000, 51200000000000000, 10240000000000000, 20480000000000000, 40960000000000000, 81920000000000000, 16384000000000000, 32768000000000000, 65536000000000000, 13107200000000000, 26214400000000000, 52428800000000000, 10485760000000000, 20971520000000000, 41943040000000000, 83886080000000000, 16777216000000000, 33554432000000000, 67108864000000000, 13421772800000000, 26843545600000000, 53687091200000000, 10737418240000000, 21474836480000000, 42949672960000000, 85899345920000000, 17179869184000000, 34359738368000000, 68719476736000000, 13743895347200000, 27487790694400000, 54975581388800000, 10995116277760000, 21990232555520000, 43980465111040000, 87960930222080000, 17592186044416000, 35184372088832000, 70368744177664000, 14073748835532800, 28147497671065600, 56294995342131200, 11258999068426240, 22517998136852480, 45035996273704960, 90071992547409920, 18014398509481984, 36028797018963968, 72057594037927936, 14411518807585587, 28823037615171174, 57646075230342349, 11529215046068470, 23058430092136940, 46116860184273879, 92233720368547758, 18446744073709552, 36893488147419103, 73786976294838206, 14757395258967641, 29514790517935283, 59029581035870565, 11805916207174113, 23611832414348226, 47223664828696452, 94447329657392904, 18889465931478581, 37778931862957162, 75557863725914323, 15111572745182865, 30223145490365729, 60446290980731459, 12089258196146292, 24178516392292583, 48357032784585167, 96714065569170334, 19342813113834067, 38685626227668134, 77371252455336267, 15474250491067253, 30948500982134507, 61897001964269014, 12379400392853803, 24758800785707605, 49517601571415211, 99035203142830422, 19807040628566084, 39614081257132169, 79228162514264338, 15845632502852868, 31691265005705735, 63382530011411470, 12676506002282294, 25353012004564588, 50706024009129176, 10141204801825835, 20282409603651670, 40564819207303341, 81129638414606682, 16225927682921336, 32451855365842673, 64903710731685345, 12980742146337069, 25961484292674138, 51922968585348276, 10384593717069655, 20769187434139311, 41538374868278621, 83076749736557242, 16615349947311448, 33230699894622897, 66461399789245794, 13292279957849159, 26584559915698317, 53169119831396635, 10633823966279327, 21267647932558654, 42535295865117308, 85070591730234616, 17014118346046923, 34028236692093846, 68056473384187693, 13611294676837539, 27222589353675077, 54445178707350154, 10889035741470031, 21778071482940062, 43556142965880123, 87112285931760247, 17422457186352049, 34844914372704099, 69689828745408197, 13937965749081639, 27875931498163279, 55751862996326558, 11150372599265312, 22300745198530623, 44601490397061246, 89202980794122493, 17840596158824499, 35681192317648997, 71362384635297994, 14272476927059599, 28544953854119198, 57089907708238395, 11417981541647679, 22835963083295358, 45671926166590716, 91343852333181432, 18268770466636286, 36537540933272573, 73075081866545146, 14615016373309029, 29230032746618058, 58460065493236117, 11692013098647223, 23384026197294447, 46768052394588893, 93536104789177787, 18707220957835557, 37414441915671115, 74828883831342229, 14965776766268446, 29931553532536892, 59863107065073784, 11972621413014757, 23945242826029513, 47890485652059027, 95780971304118054, 19156194260823611, 38312388521647221, 76624777043294443, 15324955408658889, 30649910817317777, 61299821634635554, 12259964326927111, 24519928653854222, 49039857307708443, 98079714615416887, 19615942923083377, 39231885846166755, 78463771692333510, 15692754338466702, 31385508676933404, 62771017353866808, 12554203470773362, 25108406941546723, 50216813883093446, 10043362776618689, 20086725553237378, 40173451106474757, 80346902212949514, 16069380442589903, 32138760885179806, 64277521770359611, 12855504354071922, 25711008708143844, 51422017416287689, 10284403483257538, 20568806966515076, 41137613933030151, 82275227866060302, 16455045573212060, 32910091146424121, 65820182292848242, 13164036458569648, 26328072917139297, 52656145834278593, 10531229166855719, 21062458333711437, 42124916667422875, 84249833334845749, 16849966666969150, 33699933333938300, 67399866667876599, 13479973333575320, 26959946667150640, 53919893334301280, 10783978666860256, 21567957333720512, 43135914667441024, 86271829334882047, 17254365866976409, 34508731733952819, 69017463467905638, 13803492693581128, 27606985387162255, 55213970774324510, 11042794154864902, 22085588309729804, 44171176619459608, 88342353238919216, 17668470647783843, 35336941295567687, 70673882591135373, 14134776518227075, 28269553036454149, 56539106072908299, 11307821214581660, 22615642429163319, 45231284858326639, 90462569716653278, 18092513943330656, 36185027886661311, 72370055773322622, 14474011154664524, 28948022309329049, 57896044618658098, 11579208923731620, 23158417847463239, 46316835694926478, 92633671389852956, 18526734277970591, 37053468555941183, 74106937111882365, 14821387422376473, 29642774844752946, 59285549689505892, 11857109937901178, 23714219875802357, 47428439751604714, 94856879503209427, 18971375900641885, 37942751801283771, 75885503602567542, 15177100720513508, 30354201441027017, 60708402882054033, 12141680576410807, 24283361152821613, 48566722305643227, 97133444611286454, 19426688922257291, 38853377844514581, 77706755689029163, 15541351137805833, 31082702275611665, 62165404551223330, 12433080910244666, 24866161820489332, 49732323640978664, 99464647281957328, 19892929456391466, 39785858912782931, 79571717825565863, 15914343565113173, 31828687130226345, 63657374260452690, 12731474852090538, 25462949704181076, 50925899408362152, 10185179881672430, 20370359763344861, 40740719526689722, 81481439053379443, 16296287810675889, 32592575621351777, 65185151242703555, 13037030248540711, 26074060497081422, 52148120994162844, 10429624198832569, 20859248397665138, 41718496795330275, 83436993590660550, 16687398718132110, 33374797436264220, 66749594872528440, 13349918974505688, 26699837949011376, 53399675898022752, 10679935179604550, 21359870359209101, 42719740718418202, 85439481436836403, 17087896287367281, 34175792574734561, 68351585149469123, 13670317029893825, 27340634059787649, 54681268119575298, 10936253623915060, 21872507247830119, 43745014495660238, 87490028991320477, 17498005798264095, 34996011596528191, 69992023193056382, 13998404638611276, 27996809277222553, 55993618554445105, 11198723710889021, 22397447421778042, 44794894843556084, 89589789687112168, 17917957937422434, 35835915874844867, 71671831749689735, 14334366349937947, 28668732699875894, 57337465399751788, 11467493079950358, 22934986159900715, 45869972319801430, 91739944639602860, 18347988927920572, 36695977855841144, 73391955711682288, 14678391142336458, 29356782284672915, 58713564569345831, 11742712913869166, 23485425827738332, 46970851655476665, 93941703310953329, 18788340662190666, 37576681324381332, 75153362648762663, 15030672529752533, 30061345059505065, 60122690119010131, 12024538023802026, 24049076047604052, 48098152095208105, 96196304190416209, 19239260838083242, 38478521676166484, 76957043352332967, 15391408670466593, 30782817340933187, 61565634681866374, 12313126936373275, 24626253872746550, 49252507745493099, 98505015490986198, 19701003098197240, 39402006196394479, 78804012392788958, 15760802478557792, 31521604957115583, 63043209914231167, 12608641982846233, 25217283965692467, 50434567931384933, 10086913586276987, 20173827172553973, 40347654345107947, 80695308690215893, 16139061738043179, 32278123476086357, 64556246952172715, 12911249390434543, 25822498780869086, 51644997561738172, 10328999512347634, 20657999024695269, 41315998049390537, 82631996098781075, 16526399219756215, 33052798439512430, 66105596879024860, 13221119375804972, 26442238751609944, 52884477503219888, 10576895500643978, 21153791001287955, 42307582002575910, 84615164005151821, 16923032801030364, 33846065602060728, 67692131204121457, 13538426240824291, 27076852481648583, 54153704963297165, 10830740992659433, 21661481985318866, 43322963970637732, 86645927941275464, 17329185588255093, 34658371176510186, 69316742353020371, 13863348470604074, 27726696941208149, 55453393882416297, 11090678776483259, 22181357552966519, 44362715105933038, 88725430211866076, 17745086042373215, 35490172084746430, 70980344169492860, 14196068833898572, 28392137667797144, 56784275335594288, 11356855067118858, 22713710134237715, 45427420268475431, 90854840536950861, 18170968107390172, 36341936214780345, 72683872429560689, 14536774485912138, 29073548971824276, 58147097943648551, 11629419588729710, 23258839177459420, 46517678354918841, 93035356709837682, 18607071341967536, 37214142683935073, 74428285367870146, 14885657073574029, 29771314147148058, 59542628294296116, 11908525658859223, 23817051317718447, 47634102635436893, 95268205270873786, 19053641054174757, 38107282108349515, 76214564216699029, 15242912843339806, 30485825686679612, 60971651373359223, 12194330274671845, 24388660549343689, 48777321098687379, 97554642197374757, 19510928439474951, 39021856878949903, 78043713757899806, 15608742751579961, 31217485503159922, 62434971006319845, 12486994201263969, 24973988402527938, 49947976805055876, 99895953610111751, 19979190722022350, 39958381444044701, 79916762888089401, 15983352577617880, 31966705155235760, 63933410310471521, 12786682062094304, 25573364124188608, 51146728248377217, 10229345649675443, 20458691299350887, 40917382598701773, 81834765197403547, 16366953039480709, 32733906078961419, 65467812157922837, 13093562431584567, 26187124863169135, 52374249726338270, 10474849945267654, 20949699890535308, 41899399781070616, 83798799562141232, 16759759912428246, 33519519824856493, 67039039649712985, 13407807929942597, 26815615859885194, 53631231719770388, 10726246343954078, 21452492687908155, 42904985375816311, 85809970751632621, 17161994150326524, 34323988300653049, 68647976601306097, 13729595320261219, 27459190640522439, 54918381281044878, 10983676256208976, 21967352512417951, 43934705024835902, 87869410049671804, 17573882009934361, 35147764019868722, 70295528039737443, 14059105607947489, 28118211215894977, 56236422431789955, 11247284486357991, 22494568972715982, 44989137945431964, 89978275890863928, 17995655178172786, 35991310356345571, 71982620712691142, 14396524142538228, 28793048285076457, 57586096570152914, 11517219314030583, 23034438628061165, 46068877256122331, 92137754512244662, 18427550902448932, 36855101804897865, 73710203609795730, 14742040721959146, 29484081443918292, 58968162887836584, 11793632577567317, 23587265155134633, 47174530310269267, 94349060620538534, 18869812124107707, 37739624248215414, 75479248496430827, 15095849699286165, 30191699398572331, 60383398797144662, 12076679759428932, 24153359518857865, 48306719037715729, 96613438075431459, 19322687615086292, 38645375230172583, 77290750460345167, 15458150092069033, 30916300184138067, 61832600368276134, 12366520073655227, 24733040147310453, 49466080294620907, 98932160589241814, 19786432117848363, 39572864235696725, 79145728471393451, 15829145694278690, 31658291388557380, 63316582777114761, 12663316555422952, 25326633110845904, 50653266221691809, 10130653244338362, 20261306488676723, 40522612977353447, 81045225954706894, 16209045190941379, 32418090381882757, 64836180763765515, 12967236152753103, 25934472305506206, 51868944611012412, 10373788922202482, 20747577844404965, 41495155688809930, 82990311377619859, 16598062275523972, 33196124551047944, 66392249102095887, 13278449820419177, 26556899640838355, 53113799281676710, 10622759856335342, 21245519712670684, 42491039425341368, 84982078850682736, 16996415770136547, 33992831540273094, 67985663080546189, 13597132616109238, 27194265232218475, 54388530464436951, 10877706092887390, 21755412185774780, 43510824371549561, 87021648743099121, 17404329748619824, 34808659497239649, 69617318994479297, 13923463798895859, 27846927597791719, 55693855195583438, 11138771039116688, 22277542078233375, 44555084156466750, 89110168312933500, 17822033662586700, 35644067325173400, 71288134650346800, 14257626930069360, 28515253860138720, 57030507720277440, 11406101544055488, 22812203088110976, 45624406176221952, 91248812352443904, 18249762470488781, 36499524940977562, 72999049881955123, 14599809976391025, 29199619952782049, 58399239905564099, 11679847981112820, 23359695962225640, 46719391924451279, 93438783848902558, 18687756769780512, 37375513539561023, 74751027079122046, 14950205415824409, 29900410831648819, 59800821663297637, 11960164332659527, 23920328665319055, 47840657330638110, 95681314661276219, 19136262932255244, 38272525864510488, 76545051729020976, 15309010345804195, 30618020691608390, 61236041383216780, 12247208276643356, 24494416553286712, 48988833106573424, 97977666213146849, 19595533242629370, 39191066485258739, 78382132970517479, 15676426594103496, 31352853188206992, 62705706376413983, 12541141275282797, 25082282550565593, 50164565101131187, 10032913020226237, 20065826040452475, 40131652080904949, 80263304161809898, 16052660832361980, 32105321664723959, 64210643329447919, 12842128665889584, 25684257331779168, 51368514663558335, 10273702932711667, 20547405865423334, 41094811730846668, 82189623461693336, 16437924692338667, 32875849384677334, 65751698769354669, 13150339753870934, 26300679507741868, 52601359015483735, 10520271803096747, 21040543606193494, 42081087212386988, 84162174424773976, 16832434884923692028357, 12420144738405671, 24840289476811343, 49680578953622686, 99361157907245372, 19872231581449074, 39744463162898149, 79488926325796297, 15897785265159259, 31795570530318519, 63591141060637038, 12718228212127408, 25436456424254815, 50872912848509630, 10174582569701926, 20349165139403852, 40698330278807704, 81396660557615409, 16279332111523082, 32558664223046163, 65117328446092327, 13023465689218465, 26046931378436931, 52093862756873862, 10418772551374772, 20837545102749545, 41675090205499089, 83350180410998178, 16670036082199636, 33340072164399271, 66680144328798543, 13336028865759709, 26672057731519417, 53344115463038834, 10668823092607767, 21337646185215534, 42675292370431067, 85350584740862135, 17070116948172427, 34140233896344854, 68280467792689708, 13656093558537942, 27312187117075883, 54624374234151766, 10924874846830353, 21849749693660706, 43699499387321413, 87398998774642826, 17479799754928565, 34959599509857130, 69919199019714261, 13983839803942852, 27967679607885704, 55935359215771409, 11187071843154282, 22374143686308563, 44748287372617127, 89496574745234254, 17899314949046851, 35798629898093702, 71597259796187403, 14319451959237481, 28638903918474961, 57277807836949922, 11455561567389984, 22911123134779969, 45822246269559938, 91644492539119876, 18328898507823975, 36657797015647950, 73315594031295901, 14663118806259180, 29326237612518360, 58652475225036721, 11730495045007344, 23460990090014688, 46921980180029376, 93843960360058753, 18768792072011751, 37537584144023501, 75075168288047002, 15015033657609400, 30030067315218801, 60060134630437602, 12012026926087520, 24024053852175041, 48048107704350081, 96096215408700163, 19219243081740033, 38438486163480065, 76876972326960130, 15375394465392026, 30750788930784052, 61501577861568104, 12300315572313621, 24600631144627242, 49201262289254483, 98402524578508967, 19680504915701793, 39361009831403587, 78722019662807173, 15744403932561435, 31488807865122869, 62977615730245739, 12595523146049148, 25191046292098296, 50382092584196591, 10076418516839318, 20152837033678636, 40305674067357273, 80611348134714546, 16122269626942909, 32244539253885818, 64489078507771637, 12897815701554327, 25795631403108655, 51591262806217309, 10318252561243462, 20636505122486924, 41273010244973847, 82546020489947695, 16509204097989539, 33018408195979078, 66036816391958156, 13207363278391631, 26414726556783262, 52829453113566525, 10565890622713305, 21131781245426610, 42263562490853220, 84527124981706439, 16905424996341288, 33810849992682576, 67621699985365152, 13524339997073030, 27048679994146061, 54097359988292121, 10819471997658424, 21638943995316848, 43277887990633697, 86555775981267394, 17311155196253479, 34622310392506958, 69244620785013915, 13848924157002783, 27697848314005566, 55395696628011132, 11079139325602226, 22158278651204453, 44316557302408906, 88633114604817811, 17726622920963562, 35453245841927125, 70906491683854249, 14181298336770850, 28362596673541700, 56725193347083399, 11345038669416680, 22690077338833360, 45380154677666719, 90760309355333439, 18152061871066688, 36304123742133376, 72608247484266751, 14521649496853350, 29043298993706700, 58086597987413401, 11617319597482680, 23234639194965360, 46469278389930721, 92938556779861441, 18587711355972288, 37175422711944577, 74350845423889153, 14870169084777831, 29740338169555661, 59480676339111323, 11896135267822265, 23792270535644529, 47584541071289058, 95169082142578116, 19033816428515623, 38067632857031246, 76135265714062493, 15227053142812499, 30454106285624997, 60908212571249994, 12181642514249999, 24363285028499998, 48726570056999995, 97453140113999991, 19490628022799998, 38981256045599996, 77962512091199993, 15592502418239999, 31185004836479997, 62370009672959994, 12474001934591999, 24948003869183998, 49896007738367995, 99792015476735991, 19958403095347198, 39916806190694396, 79833612381388792, 15966722476277758, 31933444952555517, 63866889905111034, 12773377981022207, 25546755962044414, 51093511924088827, 10218702384817765, 20437404769635531, 40874809539271062, 81749619078542123, 16349923815708425, 32699847631416849, 65399695262833699, 13079939052566740, 26159878105133480, 52319756210266959, 10463951242053392, 20927902484106784, 41855804968213567, 83711609936427134, 16742321987285427, 33484643974570854, 66969287949141708, 13393857589828342, 26787715179656683, 53575430359313366, 10715086071862673, 21430172143725346, 42860344287450693, 85720688574901386, 17144137714980277, 34288275429960554, 68576550859921109, 13715310171984222, 27430620343968443, 54861240687936887, 10972248137587377, 21944496275174755, 43888992550349509, 87777985100699019, 17555597020139804, 35111194040279608, 70222388080559215, 14044477616111843, 28088955232223686, 56177910464447372, 11235582092889474, 22471164185778949, 44942328371557898, 89884656743115795};
const double _10en[617 + 16] = {1e-308, 1e-307, 1e-306, 1e-305, 1e-304, 1e-303, 1e-302, 1e-301, 1e-300, 1e-299, 1e-298, 1e-297, 1e-296, 1e-295, 1e-294, 1e-293, 1e-292, 1e-291, 1e-290, 1e-289, 1e-288, 1e-287, 1e-286, 1e-285, 1e-284, 1e-283, 1e-282, 1e-281, 1e-280, 1e-279, 1e-278, 1e-277, 1e-276, 1e-275, 1e-274, 1e-273, 1e-272, 1e-271, 1e-270, 1e-269, 1e-268, 1e-267, 1e-266, 1e-265, 1e-264, 1e-263, 1e-262, 1e-261, 1e-260, 1e-259, 1e-258, 1e-257, 1e-256, 1e-255, 1e-254, 1e-253, 1e-252, 1e-251, 1e-250, 1e-249, 1e-248, 1e-247, 1e-246, 1e-245, 1e-244, 1e-243, 1e-242, 1e-241, 1e-240, 1e-239, 1e-238, 1e-237, 1e-236, 1e-235, 1e-234, 1e-233, 1e-232, 1e-231, 1e-230, 1e-229, 1e-228, 1e-227, 1e-226, 1e-225, 1e-224, 1e-223, 1e-222, 1e-221, 1e-220, 1e-219, 1e-218, 1e-217, 1e-216, 1e-215, 1e-214, 1e-213, 1e-212, 1e-211, 1e-210, 1e-209, 1e-208, 1e-207, 1e-206, 1e-205, 1e-204, 1e-203, 1e-202, 1e-201, 1e-200, 1e-199, 1e-198, 1e-197, 1e-196, 1e-195, 1e-194, 1e-193, 1e-192, 1e-191, 1e-190, 1e-189, 1e-188, 1e-187, 1e-186, 1e-185, 1e-184, 1e-183, 1e-182, 1e-181, 1e-180, 1e-179, 1e-178, 1e-177, 1e-176, 1e-175, 1e-174, 1e-173, 1e-172, 1e-171, 1e-170, 1e-169, 1e-168, 1e-167, 1e-166, 1e-165, 1e-164, 1e-163, 1e-162, 1e-161, 1e-160, 1e-159, 1e-158, 1e-157, 1e-156, 1e-155, 1e-154, 1e-153, 1e-152, 1e-151, 1e-150, 1e-149, 1e-148, 1e-147, 1e-146, 1e-145, 1e-144, 1e-143, 1e-142, 1e-141, 1e-140, 1e-139, 1e-138, 1e-137, 1e-136, 1e-135, 1e-134, 1e-133, 1e-132, 1e-131, 1e-130, 1e-129, 1e-128, 1e-127, 1e-126, 1e-125, 1e-124, 1e-123, 1e-122, 1e-121, 1e-120, 1e-119, 1e-118, 1e-117, 1e-116, 1e-115, 1e-114, 1e-113, 1e-112, 1e-111, 1e-110, 1e-109, 1e-108, 1e-107, 1e-106, 1e-105, 1e-104, 1e-103, 1e-102, 1e-101, 1e-100, 1e-99, 1e-98, 1e-97, 1e-96, 1e-95, 1e-94, 1e-93, 1e-92, 1e-91, 1e-90, 1e-89, 1e-88, 1e-87, 1e-86, 1e-85, 1e-84, 1e-83, 1e-82, 1e-81, 1e-80, 1e-79, 1e-78, 1e-77, 1e-76, 1e-75, 1e-74, 1e-73, 1e-72, 1e-71, 1e-70, 1e-69, 1e-68, 1e-67, 1e-66, 1e-65, 1e-64, 1e-63, 1e-62, 1e-61, 1e-60, 1e-59, 1e-58, 1e-57, 1e-56, 1e-55, 1e-54, 1e-53, 1e-52, 1e-51, 1e-50, 1e-49, 1e-48, 1e-47, 1e-46, 1e-45, 1e-44, 1e-43, 1e-42, 1e-41, 1e-40, 1e-39, 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33, 1e-32, 1e-31, 1e-30, 1e-29, 1e-28, 1e-27, 1e-26, 1e-25, 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19, 1e-18, 1e-17, 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79, 1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89, 1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99, 1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109, 1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119, 1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129, 1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139, 1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149, 1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159, 1e160, 1e161, 1e162, 1e163, 1e164, 1e165, 1e166, 1e167, 1e168, 1e169, 1e170, 1e171, 1e172, 1e173, 1e174, 1e175, 1e176, 1e177, 1e178, 1e179, 1e180, 1e181, 1e182, 1e183, 1e184, 1e185, 1e186, 1e187, 1e188, 1e189, 1e190, 1e191, 1e192, 1e193, 1e194, 1e195, 1e196, 1e197, 1e198, 1e199, 1e200, 1e201, 1e202, 1e203, 1e204, 1e205, 1e206, 1e207, 1e208, 1e209, 1e210, 1e211, 1e212, 1e213, 1e214, 1e215, 1e216, 1e217, 1e218, 1e219, 1e220, 1e221, 1e222, 1e223, 1e224, 1e225, 1e226, 1e227, 1e228, 1e229, 1e230, 1e231, 1e232, 1e233, 1e234, 1e235, 1e236, 1e237, 1e238, 1e239, 1e240, 1e241, 1e242, 1e243, 1e244, 1e245, 1e246, 1e247, 1e248, 1e249, 1e250, 1e251, 1e252, 1e253, 1e254, 1e255, 1e256, 1e257, 1e258, 1e259, 1e260, 1e261, 1e262, 1e263, 1e264, 1e265, 1e266, 1e267, 1e268, 1e269, 1e270, 1e271, 1e272, 1e273, 1e274, 1e275, 1e276, 1e277, 1e278, 1e279, 1e280, 1e281, 1e282, 1e283, 1e284, 1e285, 1e286, 1e287, 1e288, 1e289, 1e290, 1e291, 1e292, 1e293, 1e294, 1e295, 1e296, 1e297, 1e298, 1e299, 1e300, 1e301, 1e302, 1e303, 1e304, 1e305, 1e306, 1e307, 1e308, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16};

double getpow10(int n)
{
    return _10en[n + 308];
}
int getb(double value)
{
	// value=std::fabs(value);
	const double r = 1.0 / log2(10.0); // 0.30102999566398120;
	// int exponent = static_cast<int>(((*(reinterpret_cast<uint64_t *>(&value)) >> 52) & 0x7FF) - 1023) * r; // 5 operation
	int exponent = int((((*(uint64_t *)(&value)) >> 52) & 0x7FF) - 1023) * r;
	// double num = std::fabs(value) * _10en[-exponent + 308]; // one read , one operation
	// return exponent + (num >= 10.0) - (num < 1.0);
	int condition = (std::fabs(value) > 1.0);
	int b = exponent + condition - (std::fabs(value) < _10en[exponent + condition + 308]);
	return value == 0 ? 0 : b;
}
double getpow10n_mul_pow2n(int n, int m, int i = 0)
{
    // 10的n次方除以2的m次方
    // return
    double res = getpow10(n) * pow(2, m);
    int pow5 = n;
    int pow2 = n + m;
    res = pow(5.0, n) * pow(2.0, n + m);
    //printf("i=%d pow5=%d pow2=%d ", i, pow5, pow2);
    return res;
}
class info
{
public:
    int index;
    double scale1, scale2;
    int is_change; // 1时scale1和scale2有效
                   // 0时scale1有效
    struct
    {
        int pow5;
        int pow2;
    } s5[2];
    struct
    {
        int pow10;
        int pow2;
    } s10[2];
    void print_info()
    {
        printf("index=%d ", index);
        if (is_change)
        {
            printf("s5[0].pow5=%d s5[0].pow2=%d  s10[0].pow10=%d s10[0].pow2=%d ", s5[0].pow5, s5[0].pow2, s10[0].pow10, s10[0].pow2);
            printf("s5[1].pow5=%d s5[1].pow2=%d  s10[1].pow10=%d s10[1].pow2=%d ", s5[1].pow5, s5[1].pow2, s10[1].pow10, s10[1].pow2);
            printf("scale1=%.16le scale2=%.16le\n", scale1, scale2);
        }
        else
        {
            printf("s5[0].pow5=%d s5[0].pow2=%d  s10[0].pow10=%d s10[0].pow2=%d ", s5[0].pow5, s5[0].pow2, s10[0].pow10, s10[0].pow2);
            printf("scale=%.16le\n", scale1);
        }
    }
};
std::vector<info> all_info(2046);
void info_init(){
    const double r = 1.0 / log2(10.0);
    int pow10 = 16; // 1-2时scale=1e16*2**-52;
    int pow2 = -52;
    for (long long int i = 1 + 1022 - 1023; i <= 2046 - 1023; ++i)
    {
        if (int(i * r) != int((i + 1) * r))
        {
            int all_info_index = i  + 1022;
            if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
            all_info[all_info_index].index = i;
            all_info[all_info_index].is_change = 1;

            double scale1 = getpow10n_mul_pow2n(pow10, pow2, i);
            {
                all_info[all_info_index].scale1 = scale1;
                all_info[all_info_index].s10[0].pow10 = pow10;
                all_info[all_info_index].s10[0].pow2 = pow2;
                all_info[all_info_index].s5[0].pow5 = pow10;
                all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
            }

            pow10--;
            double scale2 = getpow10n_mul_pow2n(pow10, pow2, i);
            {
                all_info[all_info_index].scale2 = scale2;
                all_info[all_info_index].s10[1].pow10 = pow10;
                all_info[all_info_index].s10[1].pow2 = pow2;
                all_info[all_info_index].s5[1].pow5 = pow10;
                all_info[all_info_index].s5[1].pow2 = pow2 + pow10;
            }
            //printf("i=%d scale1=%.16le scale2=%.16le\n", i, scale1, scale2);
        }
        else
        {
            double scale = getpow10n_mul_pow2n(pow10, pow2, i);
            //printf("i=%d pow10=%d,pow2=%d,scale=%.16le\n", i, pow10, pow2, scale);
            int all_info_index = i  + 1022;
             if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
            all_info[all_info_index].index = i;
            all_info[all_info_index].is_change = 0;
            all_info[all_info_index].scale1 = scale;
            all_info[all_info_index].s10[0].pow10 = pow10;
            all_info[all_info_index].s10[0].pow2 = pow2;
            all_info[all_info_index].s5[0].pow5 = pow10;
            all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
        }
        pow2++;
    }
    pow10 = 17;
    pow2 = -53;
    for(long long int i=-1+1023-1023;i>=1-1023;--i){
        if(int(i*r)!=int((i+1)*r)){
            int all_info_index = i  + 1022;
            if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
            all_info[all_info_index].index = i;
            all_info[all_info_index].is_change = 1;

            double scale2 = getpow10n_mul_pow2n(pow10,pow2,i);

            {
                all_info[all_info_index].scale2 = scale2;
                all_info[all_info_index].s10[1].pow10 = pow10;
                all_info[all_info_index].s10[1].pow2 = pow2;
                all_info[all_info_index].s5[1].pow5 = pow10;
                all_info[all_info_index].s5[1].pow2 = pow2 + pow10;
            }

            pow10++;
            double scale1 = getpow10n_mul_pow2n(pow10,pow2,i);

            {
                all_info[all_info_index].scale1 = scale1;
                all_info[all_info_index].s10[0].pow10 = pow10;
                all_info[all_info_index].s10[0].pow2 = pow2;
                all_info[all_info_index].s5[0].pow5 = pow10;
                all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
            }
            

            //printf("i=%d scale1=%.16le scale2=%.16le\n",i, scale1,scale2);
        }else{
            double scale = getpow10n_mul_pow2n(pow10,pow2,i);

            int all_info_index = i + 1022;
            if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
            all_info[all_info_index].index = i;
            all_info[all_info_index].is_change = 0;
            all_info[all_info_index].scale1 = scale;
            all_info[all_info_index].s10[0].pow10 = pow10;
            all_info[all_info_index].s10[0].pow2 = pow2;
            all_info[all_info_index].s5[0].pow5 = pow10;
            all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
            //printf("i=%d pow10=%d,pow2=%d,scale=%.16le\n",i,pow10,pow2,scale);
        }
        pow2--;
    }
}
int main()
{
    const double r = 1.0 / log2(10.0);
    const double pow2_neg52 = pow(2.0, -52);
    // const double num = pow(5, 16) / pow(2, 36); // 2.2204460492503131e+00
    const double num = 152587890625.0 / 68719476736.0; // 2.2204460492503131e+00
    //0 10000000000 0001110000110111100100110111111000001000000000000000
    const double s = 2.2204460492503131;
    // printf("num=%.16le\n",num);
    //  const double s = 1.1102230246251565;

    int64_t t = (1ll << 53);
    int64_t t_1 = t * s;
    // printf("num=%.16le t=%lld\n", num, t_1);
    int pow10 = 16; // 1-2时scale=1e16*2**-52;
    int pow2 = -52;
    // 0 : 16,-52

    for (long long int i = 1 - 1023; i <= 2046 - 1023; ++i){
        int64_t num = (i + 1023) << 52;
        double num_d = *(double *)&num;
        int b=getb(num_d);
        double res=num_d*_10en[308-b+16];
        if(308-b+16 >= 617)res*=1e308;
        int64_t fres = int64_t(res);
        //printf("i=%d res=%lld\n",i,fres);
    }

    for (long long int i = 1 + 1022 - 1023; i <= 2046 - 1023; ++i)
    {
        int64_t num = (i + 1023) << 52;
        double num_d = *(double *)&num;
        // printf("i=%d num_d=%.16le\n",i,num_d);
        char char_array[32];
        sprintf(char_array, "%.16le\n", num_d);

        int64_t t = (char_array[0] - '0') * int64_t(1e16);
        for (int j = 0; j < 16; ++j)
        {
            t += (char_array[2 + j] - '0') * int64_t(pow(10, 15 - j));
        }
        // array[i + 1023] = t;
        //printf("i=%d num_d=%.16le t=%lld \n",i,num_d,t);
        // printf("%lld,", t);
        //  if(int(i*r)!=int((i+1)*r)){
        //      //printf("i=%d\n",i);
        //      int index = i+1022;
        //      //有两段
        //      int pre_log2_10=int(i*r);
        //      int next_log2_10=int((i+1)*r);
        //      double scale1=0;
        //      double scale2=0;
        //      double num_10=getpow10(next_log2_10);
        //      int64_t num_10_i64 = *(int64_t*)&num_10;
        //      int64_t num_sub= ((i+1023) << 52);
        //      scale1 = double(int64_t(1e17) - array[index]) / ( num_10_i64 - num_sub);
        //      printf("scale1=%.16le\n",scale1);
        //  }else{
        //      int index = i+1022;
        //      auto tmp=(array[index+1]-array[index]);
        //      //printf("now=%lld,next=%lld,tmp=%lld scale=%.16le\n",array[index],array[index+1],tmp,tmp*pow2_neg52);
        //      printf("scale=%.16le\n",tmp*pow2_neg52);
        //  }
        // if (int(i * r) != int((i + 1) * r))
        // {
        //     int all_info_index = i  + 1022;
        //     if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
        //     all_info[all_info_index].index = i;
        //     all_info[all_info_index].is_change = 1;

        //     double scale1 = getpow10n_mul_pow2n(pow10, pow2, i);
        //     {
        //         all_info[all_info_index].scale1 = scale1;
        //         all_info[all_info_index].s10[0].pow10 = pow10;
        //         all_info[all_info_index].s10[0].pow2 = pow2;
        //         all_info[all_info_index].s5[0].pow5 = pow10;
        //         all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
        //     }

        //     pow10--;
        //     double scale2 = getpow10n_mul_pow2n(pow10, pow2, i);
        //     {
        //         all_info[all_info_index].scale2 = scale2;
        //         all_info[all_info_index].s10[1].pow10 = pow10;
        //         all_info[all_info_index].s10[1].pow2 = pow2;
        //         all_info[all_info_index].s5[1].pow5 = pow10;
        //         all_info[all_info_index].s5[1].pow2 = pow2 + pow10;
        //     }
        //     //printf("i=%d scale1=%.16le scale2=%.16le\n", i, scale1, scale2);
        // }
        // else
        // {
        //     double scale = getpow10n_mul_pow2n(pow10, pow2, i);
        //     //printf("i=%d pow10=%d,pow2=%d,scale=%.16le\n", i, pow10, pow2, scale);
        //     int all_info_index = i  + 1022;
        //      if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
        //     all_info[all_info_index].index = i;
        //     all_info[all_info_index].is_change = 0;
        //     all_info[all_info_index].scale1 = scale;
        //     all_info[all_info_index].s10[0].pow10 = pow10;
        //     all_info[all_info_index].s10[0].pow2 = pow2;
        //     all_info[all_info_index].s5[0].pow5 = pow10;
        //     all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
        // }
        // pow2++;
    }
    //-1: 17 -53
    pow10 = 17;
    pow2 = -53;
    for(long long int i=-1+1023-1023;i>=1-1023;--i){
        // if(int(i*r)!=int((i+1)*r)){
        //     int all_info_index = i  + 1022;
        //     if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
        //     all_info[all_info_index].index = i;
        //     all_info[all_info_index].is_change = 1;

        //     double scale2 = getpow10n_mul_pow2n(pow10,pow2,i);

        //     {
        //         all_info[all_info_index].scale2 = scale2;
        //         all_info[all_info_index].s10[1].pow10 = pow10;
        //         all_info[all_info_index].s10[1].pow2 = pow2;
        //         all_info[all_info_index].s5[1].pow5 = pow10;
        //         all_info[all_info_index].s5[1].pow2 = pow2 + pow10;
        //     }

        //     pow10++;
        //     double scale1 = getpow10n_mul_pow2n(pow10,pow2,i);

        //     {
        //         all_info[all_info_index].scale1 = scale1;
        //         all_info[all_info_index].s10[0].pow10 = pow10;
        //         all_info[all_info_index].s10[0].pow2 = pow2;
        //         all_info[all_info_index].s5[0].pow5 = pow10;
        //         all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
        //     }
            

        //     //printf("i=%d scale1=%.16le scale2=%.16le\n",i, scale1,scale2);
        // }else{
        //     double scale = getpow10n_mul_pow2n(pow10,pow2,i);

        //     int all_info_index = i + 1022;
        //     if(all_info_index<0 || all_info_index>=2046){printf("error i=%d\n",i);exit(1);}
        //     all_info[all_info_index].index = i;
        //     all_info[all_info_index].is_change = 0;
        //     all_info[all_info_index].scale1 = scale;
        //     all_info[all_info_index].s10[0].pow10 = pow10;
        //     all_info[all_info_index].s10[0].pow2 = pow2;
        //     all_info[all_info_index].s5[0].pow5 = pow10;
        //     all_info[all_info_index].s5[0].pow2 = pow2 + pow10;
        //     //printf("i=%d pow10=%d,pow2=%d,scale=%.16le\n",i,pow10,pow2,scale);
        // }
        // pow2--;
    }
    info_init();
    double min_value = 100;
    int min_id;
    for(int i=0;i<2046;i++){
        all_info[i].print_info();
        if(all_info[i].is_change==1){
            double scale1 = all_info[i].scale1;
            double scale2 = all_info[i].scale2;
            if(scale1<min_value){
                min_value = scale1;
                min_id=all_info[i].index;
            }
            if(scale2<min_value){
                min_value = scale2;
                 min_id=all_info[i].index;
            }
        }else{
            double scale = all_info[i].scale1;
            if(scale<min_value){
                min_value = scale;
                 min_id=all_info[i].index;
            }
        }
    }
    //printf("min_id=%d min_value=%.16le\n",min_id, min_value);
    return 0;
}